﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int SLTDatatype;

typedef struct SListnode
{
	SLTDatatype* data;
	struct SListnode* next;
}SLTnode;

//打印
void SLTPrint(SLTnode* phead);

//申请新结点
SLTnode* SLTBuynode(SLTDatatype x);

//插入
void SLTPushBack(SLTnode** phead, SLTDatatype x);
void SLTPushFront(SLTnode** phead, SLTDatatype x);

//删除
void SLTPopBack(SLTnode** phead);
void SLTPopFront(SLTnode** phead);

//查找
SLTnode* SLTFind(SLTnode* phead, SLTDatatype x);


//在指定位置之前插入数据
void SLTInsert(SLTnode** phead, SLTnode* pos, SLTDatatype x);

//在指定位置之后插⼊数据
void SLTInsertAfter(SLTnode* pos, SLTDatatype x);

//删除pos结点
void SLTErase(SLTnode** phead, SLTnode* pos);

//删除pos之后的结点
void SLTEraseAfter(SLTnode* pos);

//销毁链表
void SListDestroy(SLTnode** pphead);
